package 作业5.KTV;
import java.util.LinkedList;
import java.util.Scanner;

public class KTVByLinkedList {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("------------------欢迎来到点歌系统----------------");
        System.out.println("0.添加歌曲至列表");
        System.out.println("1.将歌曲置顶");
        System.out.println("2.将歌曲前移一位");
        System.out.println("3.退出");

        LinkedList<String> lineUpList = new LinkedList<String>(); // 创建歌曲列表
        addMusicList(lineUpList); // 添加一部分歌曲至歌曲列表
        System.out.println("当前歌曲列表：" + lineUpList);
        while (true) {
            System.out.println("请输入要执行的操作序号");
            int command = sc.nextInt();
            // 执行对应的功能
            switch (command) {
                case 0: // 添加歌曲至列表
                    addMusic(lineUpList);
                    break;
                case 1: // 将歌曲置顶
                    setTop(lineUpList);
                    break;
                case 2: // 将歌曲前移一位
                    setBefore(lineUpList);
                    break;
                case 3: // 退出
                    exit();
                    break;
                default:
                    System.out.println("----------------------------------");
                    System.out.println("功能选择有误，请输入正确的功能序号！！");
                    break;
            }
            System.out.println("当前歌曲列表：" + lineUpList);
        }
    }

    /**
     * 初始时添加歌曲名称
     */
    private static void addMusicList(LinkedList<String> list) {
        list.add("像我这样的人");
        list.add("牧马城市");
        list.add("二零三");
        list.add("十年");
    }

    /**
     * 执行添加歌曲
     */
    private static void addMusic(LinkedList<String> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要添加的歌曲名称：");
        String music = sc.nextLine();
        list.add(music); // 将歌曲添加到列表最后
        System.out.println("已添加歌曲：" + music);
    }

    /**
     * 执行将歌曲置顶
     */
    private static void setTop(LinkedList<String> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要置顶的歌曲名称：");
        String music = sc.nextLine();
        int position = list.indexOf(music); // 查找指定歌曲的位置
        if (position < 0) {
            System.out.println("单曲列表中没有该歌曲");
        } else {
            list.remove(position); // 移除指定的歌曲
            // 或 list.remove(music);
            list.addFirst(music); // 将指定的歌曲放到第一位
            // 或 list.add(0, music);
        }
        System.out.println("应将歌曲" + music + "置顶");
    }

    /**
     * 执行将歌曲提前一位
     */

    private static void setBefore(LinkedList<String> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要置前的歌曲名称");
        String music = sc.nextLine();
        int position = list.indexOf(music); // 查找指定歌曲的位置
        if (position < 0) {
            System.out.println("单曲列表中没有该歌曲");
        } else if (position == 0) {
            System.out.println("该歌曲已经在第一位");
        } else {
            list.remove(music);
            list.add(position - 1, music);
        }
        System.out.println("应将歌曲" + music + "提前一位");
    }

    /**
     * 退出
     */
    private static void exit() {
        System.out.println("----------------退出----------------");
        System.out.println("您已退出点歌系统");
        System.exit(0);
    }
}

